SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paGenerarNormaDeLicenciaMasiva] 
 @IdLicencia INT,
 @IdFechaDeLicencia INT,
 @CuiseDesde INT,
 @CuiseHasta INT,
 @SituacionDeRevista INT, 
 @Norma VARCHAR(50) OUTPUT
AS

-- <DESCRIPCION> Actualiza la Norma de Inicio de los Subservicios que corresponden a la licencia 

-- <ACTUALIZACIONES> 20-05-2009  OTERO, Marcelo y SANES, Jorge
-- <ACTUALIZACIONES> 27-05-2009 ---  OTERO, Marcelo y SANES, Jorge (Se agrego el control para que no se inserte una norma al pedo cuando no tiene nada que actualizar)



SET NOCOUNT ON
SET DATEFORMAT DMY

DECLARE @error INT
DECLARE @idNorma INT
DECLARE @Usuario INT
DECLARE @FechaDesde DATETIME 
DECLARE @FechaHasta DATETIME 

SET @Norma = ''

-- Busco la Fechas que corresponden para la Licencia que se desea 
SELECT @FechaDesde = FechaDesde, @FechaHasta = FechaHasta  FROM tb_FechasDeLicencias WHERE IdFechaDeLicencia = @IdFechaDeLicencia


IF EXISTS( SELECT  *  FROM tb_SubserviciosAgentes SS
	INNER JOIN tb_ServiciosAgentes S ON s.idServicioAgente = ss.ServicioAgente 
	INNER JOIN tb_Organizaciones O ON O.idOrganizaciones = S.UbicacionOrig 
	INNER JOIN tb_Usuarios U ON U.NTUser = SYSTEM_USER
	INNER JOIN tb_RelUsuarioOrganizacion UO ON U.IdUsuario = UO.idUsuario AND S.UbicacionOrig = UO.IdOrganizacion
	WHERE SS.Licencia = @IdLicencia
	  AND SS.NormaInicio IS NULL 
	  AND (SS.FechaAlta >= @FechaDesde AND SS.FechaAlta <= @FechaHasta)
	  AND (SS.FechaBaja >= @FechaDesde AND SS.FechaBaja <= @FechaHasta)
	  AND S.SituacionRevista = @SituacionDeRevista
	  AND (O.Cuise >= @CuiseDesde AND O.Cuise <= @CuiseHasta) ) 

	BEGIN


		-- Busco el Usuario
		SELECT @Usuario = IdUsuario FROM tb_Usuarios WHERE  NTUser = USER_NAME()
		
		
		-- SE CREA LA NORMA
		INSERT tb_Normas SELECT CONVERT(VARCHAR, UltimaNorma) +'-'+ CONVERT(VARCHAR, YEAR(GETDATE())), 1, 0, NULL, GETDATE(), NULL, 16, 0, @Usuario FROM tb_MovimientosDocentes WHERE Mnemo = 'T'
		SELECT @IdNorma = @@IDENTITY
		
		-- SE ACTUALIZA LA ULTIMA NORMA
		UPDATE tb_MovimientosDocentes SET UltimaNorma = UltimaNorma + 1 WHERE Mnemo = 'T'
		
		-- Proceso de Actualizacion 
		UPDATE SS SET SS.NormaInicio = @IdNorma FROM tb_SubserviciosAgentes SS
			INNER JOIN tb_ServiciosAgentes S ON s.idServicioAgente = ss.ServicioAgente 
			INNER JOIN tb_Organizaciones O ON O.idOrganizaciones = S.UbicacionOrig 
			INNER JOIN tb_Usuarios U ON U.NTUser = SYSTEM_USER
			INNER JOIN tb_RelUsuarioOrganizacion UO ON U.IdUsuario = UO.idUsuario AND S.UbicacionOrig = UO.IdOrganizacion
			WHERE SS.Licencia = @IdLicencia
			  AND SS.NormaInicio IS NULL 
			  AND (SS.FechaAlta >= @FechaDesde AND SS.FechaAlta <= @FechaHasta)
			  AND (SS.FechaBaja >= @FechaDesde AND SS.FechaBaja <= @FechaHasta)
			  AND S.SituacionRevista = @SituacionDeRevista
			  AND (O.Cuise >= @CuiseDesde AND O.Cuise <= @CuiseHasta)
		
		-- Busca la Norma asignada y la retorna a la pantalla
		SELECT @Norma = Descripcion FROM tb_Normas WHERE IdNorma = @IdNorma

	END
GO
GRANT EXECUTE ON  [dbo].[paGenerarNormaDeLicenciaMasiva] TO [CentroDeDesignaciones]
GRANT EXECUTE ON  [dbo].[paGenerarNormaDeLicenciaMasiva] TO [PersonalDocente]
GO
